using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp;
using CKY.AgentPlatform.Conversations.Dto;

namespace CKY.AgentPlatform.Conversations
{
    [RemoteService(IsEnabled = true)]
    public interface IConversationAppService : IApplicationService
    {
        Task<PagedResultDto<ConversationDto>> GetListAsync(GetConversationListInput input);
        Task<ConversationDto> GetAsync(Guid id);
        Task<ConversationDto> CreateAsync(CreateConversationInput input);
        Task DeleteAsync(Guid id);
        Task<ConversationDto> UpdateAsync(Guid id, UpdateConversationInput input);
        Task<ConversationMessageDto> AddMessageAsync(Guid conversationId, CreateConversationMessageInput input);
        Task<List<ConversationMessageDto>> GetMessagesAsync(Guid conversationId);
        Task<ConversationMessageDto> UpdateMessageAsync(Guid messageId, UpdateConversationMessageInput input);
        Task DeleteMessageAsync(Guid messageId);
        Task<ConversationStatisticsDto> GetStatisticsAsync(Guid? agentId = null);
          Task CloseAsync(Guid id);
        Task ReopenAsync(Guid id);
    }
}